The automobile, which burst onto the world stage at the dawn of the last century, has since undergone a constant cycle of refinement and improvement. Such improvements have affected every aspect of the vehicle including customer comfort, vehicle performance, fuel consumption, noise level, emissions level, and so on. Traditionally, each improvement cycle required a new car model, requiring new purchases and forcing obsolescence of outdated models.
Gradually, motivated and mechanically-skilled individuals began to improve existing cars instead of simply replacing them, and this model soon caught on with the vehicle manufacturers themselves. Essentially, upgrading a vehicle instead of replacing it served to improve the consumer value by lengthening the product lifetime and thus decreasing the cost per mile driven. Thus, existing car models began to see in-service upgrades, often by way of recall or special offer to vehicle owners.
This trend accelerated with the computerization of vehicles. In particular, as more and more vehicle functions were executed in module form, the upgrading of such functions increasingly required only the replacement of one or more modules, rather than changing the mechanical components of the vehicle. For example, if ignition timing or valve timing needs to be changed—something that previously would have required replacing mechanical timing components or grinding the valve lifter cams—this can now be accomplished by simply changing a parameter in an electronic module.
Initially, such electronic modules were read-only, i.e., they could not be reprogrammed, only replaced. Examples of such devices include hard-wired circuits and PROMs. However, as electronics manufacturing technology improved, many vehicle functional modules began to employ reprogrammable memories such as EPROMS and EEPROMS. Today, flash memories are the predominant memory medium for vehicle modules.
Thus, when an electronically controlled sequence or an electronically stored parameter value needs to be changed in a modern car, the appropriate electronic module can be “reflashed,” i.e., programmed with the new code or data. However, reflashing is an energy-intensive process. And while reflashing generally produces a robust system, the system is very vulnerable to loss of power during the reflashing process itself. In particular, if power is lost while a reflashing procedure is only partially completed, the affected module or modules will at the very least need to be reprogrammed, and in some cases may be damaged to the point of requiring replacement.
Thus, while reflashing provides many benefits, it also presents certain challenges that the prior art has not been able to overcome.